package br.com.rotaestatistica.daos;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import br.com.rotaestatistica.entities.TipoEntity;
import br.com.rotaestatistica.utils.FabricaDeConexao;

public class TipoDAO {

	public List<TipoEntity> selectAllTiposAsList() {
		
		List<TipoEntity> list = new ArrayList<TipoEntity>();
        PreparedStatement pstm = null;
        ResultSet rs = null;

        String SQL = "SELECT * FROM Tipo";
        
        try {
                pstm = FabricaDeConexao.getConexao().prepareStatement(SQL);
                
                
                rs = pstm.executeQuery();
                while (rs.next()) {
                        TipoEntity tipo = new TipoEntity();
                        
                        tipo.setId_Tipo(rs.getLong("id_Tipo"));
                        tipo.setTipo(rs.getString("tipo"));
                        
                        list.add(tipo);
                }
                return list;
        } catch (SQLException e) {
                e.printStackTrace();
                return null;
        } finally {
                try {
                        rs.close();
                        pstm.close();
                        FabricaDeConexao.fechaConexao();
                } catch (SQLException e) {
                        e.printStackTrace();
                }
        }
	}
	
	public TipoEntity selectTipoById(long idTipo) {
		TipoEntity tipo = new TipoEntity();
        PreparedStatement pstm = null;
        ResultSet rs = null;

        String SQL = "SELECT * FROM Tipo WHERE idTipo=?";
        
        try {
                pstm = FabricaDeConexao.getConexao().prepareStatement(SQL);
                pstm.setLong(1, idTipo);
                
                rs = pstm.executeQuery();
                
                return tipo;
        } catch (SQLException e) {
                e.printStackTrace();
                return null;
        } finally {
                try {
                        rs.close();
                        pstm.close();
                        FabricaDeConexao.fechaConexao();
                } catch (SQLException e) {
                        e.printStackTrace();
                }
        }
	}
	
	public boolean insertTipo(TipoEntity tipo) {
		
		PreparedStatement pstm = null;

        String SQL = "INSERT INTO Tipo(id_Tipo,tipo) VALUES (?,?)";
        
        try {
                pstm = FabricaDeConexao.getConexao().prepareStatement(SQL);
                pstm.setLong(1, tipo.getId_Tipo());
                pstm.setString(2, tipo.getTipo());

                pstm.executeQuery(); 
                
                return true;
        } catch (SQLException e) {
                e.printStackTrace();
                return false;
        } finally {
                try {
                        pstm.close();
                        FabricaDeConexao.fechaConexao();
                } catch (SQLException e) {
                        e.printStackTrace();
                }
        }
		

	}
		
	public boolean deleteTipoById(long idTipo) {
		PreparedStatement pstm = null;

        String SQL = "DELETE FROM Tipo WHERE idTipo =?";
        
        try {
                pstm = FabricaDeConexao.getConexao().prepareStatement(SQL);
                pstm.setLong(1, idTipo);
                
                pstm.executeUpdate();
                
                return true;
        } catch (SQLException e) {
                e.printStackTrace();
                return false;
        } finally {
                try {
                        pstm.close();
                        FabricaDeConexao.fechaConexao();
                } catch (SQLException e) {
                        e.printStackTrace();
                }
        }
	}
	
	public boolean updateTipo(TipoEntity tipo) {
	
		PreparedStatement pstm = null;

        String SQL = "UPDATE Tipo SET tipo=? WHERE idTipo=?";
        
        try {
                pstm = FabricaDeConexao.getConexao().prepareStatement(SQL);
                pstm.setString(1, tipo.getTipo()); 
                pstm.setLong(2, tipo.getId_Tipo());
                
                pstm.executeUpdate();
                
                return true;
        } catch (SQLException e) {
                e.printStackTrace();
                return false;
        } finally {
                try {
                        pstm.close();
                        FabricaDeConexao.fechaConexao();
                } catch (SQLException e) {
                        e.printStackTrace();
                }
        }
	}

	}


